package com.cw.jeeyt.common.utils;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class WordGenerator {
    /**
     * @param dataMap word中需要展示的动态数据，用map集合来保存
     * @param templateName word模板名称，例如：test.ftl
     * @param filePath 文件生成的目标路径，例如：D:/wordFile/
     * @param fileName 生成的文件名称，例如：test.doc
     * @Desc：生成word文件
     * @Author：chenw
     * @Date：2014-1-22下午05:33:42
     */
    public static void createWord(Map<String, Object> dataMap, String templateName, String templatePath,
        String filePath, String fileName) throws Exception {
        // 创建配置实例
        Configuration config = FreemarkerConfiguration.getConfiguation(templatePath);
        // 设置编码
        config.setDefaultEncoding("UTF-8");
        // 获取模板
        Template template = config.getTemplate(templateName);

        // 输出文件
        File outFile = new File(filePath + File.separator + fileName);

        // 如果输出目标文件夹不存在，则创建
        if (!outFile.getParentFile()
            .exists()) {
            outFile.getParentFile()
                .mkdirs();
        }

        // 将模板和数据模型合并生成文件
        Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));

        // 生成文件
        template.process(dataMap, out);

        // 关闭流
        out.flush();
        out.close();
    }
}
